Mysql技术内幕之InnoDB锁的深入讲解
前言自7月份换工作以来,期间一直在学习MySQL的相关知识,听了一些视频课,但是一直好奇那些讲师的知识是从哪里学习的。于是想着从书籍中找答案。毕竟一直看视频也不是办法,不能形成自己的知识。于是想着看书汲取知识,看了几本MySQL的相关书籍,包括《深入浅出Mysql》《高性能Mysql》《Mysql...
2024-01-10JDBC内幕subquery
subquery子查询指一个查询语句嵌套在另一个查询语句内部的查询,在 SELECT 子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表,子查询中常用的操作符有 ANY(SOME)、ALL、IN 和 EXISTS。常见形式如下数据中间件一般处理subquery思路是拆分SQL语句,先查询...
2024-01-10BaikalDB技术实现内幕(一)分布式事务实现
本系列文章主要介绍HTAP数据库BaikalDB的技术实现细节。作者介绍:罗小兵,百度商业平台研发部高级研发工程师,主要负责BaikalDB事务能力,全局二级索引等方向的研发工作。欢迎关注 Star github.com/baidu/BaikalDB一、概述BaikalDB系统简介BaikalDB是一个分布式可扩展的存储系统,兼容MySQL协议,整个系统...
2024-01-10mysql操作进阶
# ### part1 单表查询# sql 查询语句的完整语法 """ select .. from .. where .. group by .. having .. order by .. limit .. """# 一.where 条件的使用 """功能:对表中的数据进行筛选过滤""" """ 语法: 1.判断的符号: = > < >= <= != <> 不等于 2.拼接条件的关键字 and or not 3.查询的区间范围值 between between 小值 and 大值 [小值,大...
2024-01-10mysql 批量修复
#!/bin/bashhost_name=127.0.0.1user_name=user_pwd=database=need_optmize_table=falsetables=$(/usr/local/webserver/mysql/bin/mysql -h$host_name -u$user_name -p$user_pwd $database -A -Bse "show tables")for table_name in $tablesdo check_result=$(/usr/local/webs...
2024-01-10mysql入门(一)
数据库介绍数据库是在计算机出现以后,为了解决计算机存储问题而创建,数据库中包含表,表当中才是数据。数据库的发展史1. 萌芽阶段所有存储依赖的都是文件,安全性低,查找非常困难。2. 层次模型1). 优点:查询分类的效率高;2). 缺点:导航结构:如果查找同类别数据,效率低。数据不完整(如下图)...
2024-01-10mysql的一些知识点
单表优化:考虑使用ref(使用了非唯一索引),或range(使用了索引) index 是遍历了索引后进行回表遍历 all 直接查全表 extra不要有using filesort(有第二次查询,一般伴随着order by), 和using where(表示需要进行回表操作) using temporar (已经有表了,...
2024-01-10mysql组复制的应用场景
应用场景1、数据库的灵活复制环境。分组复制可以灵活地增加和减少集群中的数据库实例。2、数据库环境的高可用性。在集群中大部分服务器可用时,组复制允许数据库实例宕机,那么整个数据库服务可用。3、替代数据库环境中传统的主从复制结构。实例vim /etc/mysql.cnf先删掉之前实验加入的内容,...
2024-01-10Mysql如何处理死锁
MySQL有两种死锁处理方式:等待,直到超时(innodb_lock_wait_timeout=50s)。发起死锁检测,主动回滚一条事务,让其他事务继续执行(innodb_deadlock_detect=on)。由于性能原因,一般都是使用死锁检测来进行处理死锁。死锁检测死锁检测的原理是构建一个以事务为顶点、锁为边的有向图,判断有向图是否存在...
2024-01-10mysql如何排序
使用SELECT抽取数据时,数据的显示是无序的,想要得到有序的数据,那么我们就需要使用ORDER BY子句进行排序。ORDED BY 子句语法:SELECT <列1>,<列2>,<列3>,......FROM <表名>ORDER BY <排序基准1>,<排序基准2>,.....ORDED BY 子句(商品的销售单价升序排列)其中desc表示降序,asc表示升序排列。示例:这里先创建一张普...
2024-01-10mysql游标的介绍
说明1、游标是用来存储查询结果集的数据类型 , 在存储过程和函数中可以使用光标对结果集进行循环的处理。2、也可以将游标称之为光标。光标的使用包括声明光标、打开光标、使用光标和关闭光标。实例-- 通过存储过程查询emp表中数据, 并逐行获取进行展示create procedure pro_test11()begin --声明...
2024-01-10mysql需要购买么
MySQL是开源软件,但开源并不意味着完全免费,开源的优势可以使更多的人对代码改进和完善,但开源软件的使用应遵循该软件提供的使用授权协议。(推荐教程:mysql数据库学习教程)MySQL分社区版和商业版。社区版是免费的,商业版要收费。免费版本的mysql与收费版本的区别在于:免费版本的具有开...
2024-01-10Mysql主从部署
Mysql主从部署基于Mysql 5.7.26-1一、 安装Mysql 离线部署推荐使用 "RPM Bundle" https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar 在线安装可使用yum源 https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm 在线安装 rpm -ivh https://dev.mys...
2024-01-10mysql备份策略的实现(全量备份+增量备份)
目录设计场景技术点服务器信息准备工作编写全量备份脚本(Mysql-FullyBak.sh)编写增量备份脚本设置定时任务crontab恢复操作最近项目需要对数据库数据进行备份,通过查阅各种资料,设计了一套数据库备份策略,通过调试运行一周后,目前已经处于平稳运行状态。现在将思路分享出来,同时感谢gredn大佬...
2024-01-10mysql通过复制文件实现备份
mysqldump的方法耗时:备份+网络传输+恢复 缺点:时间 直接复制文件的方法耗时:网络传输 缺点:可能造成意外的情况第一种已经实践过了,今天试下第二种。1.tar zxvf bak.tar.gz xxx xxx 把几个文件打包。文件是mysql下的datadir目录下的文件。 除去log文件。其他都需要。2.移到新机器下 tar zxvf bak.tar.gz3.启...
2024-01-10mysql备份与恢复
1、备份命令(用户名:root;密码:123;端口:3306)格式:mysqldump -h主机名 -p端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql例如: mysqldump -h 192.168.1.100 -p 3306 -uroot -p123 --database czz> /tmp/czz0320.sql2、备份压缩(本地可省略host参数,默认端口可省略port参数,以下均省略)导出数据比较大时,可进行压缩格式...
2024-01-10mysql常见的备份方法
1、使用tar包装文件夹备份。数据库可以直接保存data文件夹,但是占用空间大,可以用tar包装压缩保存。[root@localhost ~]# systemctl stop mysqld[root@localhost ~]# tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/[root@localhost ~]# ls /opt/mysql-2021-10-25.tar.xz[root@localhost ~]# systemctl ...
2024-01-10mysql查看备份文件的方法
说明1、mysqldump导出的SQL脚本是文本文件,/*···*/或--开头的部分表示注释信息。2、使用grep、lesscat等工具查看详细的脚本内容。3、将过滤auth.sql脚本中的数据库操作语句。实例[root@localhost ~]# grep -v "^--" auth.sql | grep -v "^/" | grep -v "^$"CREATE DATABASE /*!32312 IF NOT EXISTS*/ `auth` /*!40100 DEFAULT CHARACT...
2024-01-10Mysql备份还有这么多套路,还不了解下?
逻辑备份和物理备份逻辑备份逻辑备份用于备份数据库的结构(CREAET DATABASE、CREATE TABLE)和数据(INSERT),这种备份类型适合数据量小、跨SQL服务器、需要修改数据等场景。如mysqldump命令就是产生一个逻辑备份工具,使用mysqldump输出的文件包含CREATE TABLE和INSERT语句,能够直接重建表内容和表结构。使...
2024-01-10mysql物理备份如何理解
说明1、物理备份又分为冷备份和热备份两种。2、和逻辑备份相比,它的优点是备份和恢复的速度更快,因为物理备份的原理都是基于文件的cp。实例myisam存储引擎的热备份有很多方法,本质其实就是将要备份的表加读锁,然后再 cp 数据文件到备份目录。使用 mysqlhotcopy 工具// mysqlhotcopy 是 MySQL 的一...
2024-01-10mysql备份脚本
脚本内容:db_user="root"db_passwd="123456"db_name="db_name"time="$(date +"%Y%m%d%H%M%S")"backupdir=/home/wbxt/mysql_backup/usr/local/mysql/bin/mysqldump -u$db_user -p$db_passwd $db_name >>$backupdir/$db_name$time.sqlfind $backupdir -name "$db_name*.sql" -type f...
2024-01-10Mysql备份与恢复(2)逻辑备份
数据库及时备份可以帮助我们在数据库出现异常宕机时及时的使用备份数据进行恢复工作,将因为数据库宕机产生的影响降低到最小。上一篇针对使用xtrabackup工具进行物理备份和数据恢复做了一个详细讲解,本篇主要谈谈如何使用mysql自带的备份工具mysqldump进行逻辑备份和数据恢复。如果还围观看过上...
2024-01-10mysql备份详细解
Mysqldump导出不含创建数据库的语句mysqldump -uroot -proot wms > 1.sql包含创建数据库的语句mysqldump -uroot -proot --databases wms > 1.sql//导出某张表mysqldump -uroot -proot wms wms_goods > 1.sql//导出binlog的位置并注释,且不锁表 single-transaction的作用是开启事务mysqldump -uroot -proot --master-data=2 --s...
2024-01-10Mysql中建的表都存在哪里?[mysql基础教程]
1、临时表MySQL临时表在我们需要保存一些临时数据时是非常有用的。临时表在MySQL 3.23版本中添加。临时表中的结构和数据都存放在内存中,用的时候直接使用。只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。如果你使用了其他MySQL客户端程序连接MySQL数据库服务器来创建临时表...
2024-01-10mysql如何创建表
1.mysql中创建数据表的语法CREATE TABLE table_name (column_name column_type);在mysql>提示符下,创建一个MySQL表这是很容易的。使用 SQL 命令 CREATE TABLE 来创建表。在创建表前需要使用use databasename命令选择数据库。2.创建mysql数据表 示例:root@host# mysql -u root -pEnter password:mysql> use TUTORIALS;Database changedmysql...
2024-01-10在mysql表名中使用(-)破折号
我要备份数据库时出现错误A Database Error OccurredError Number: 1064You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-01-000001' at line 1SELECT * FROM temp_01-01-000001Filename: F:\x...
2024-01-10mysql中很多表都设计由记录创建时间和更新时间
mysql中很多表都设计由记录创建时间和更新时间ALTER TABLE `user`MODIFY COLUMN create_time datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间"; ALTER TABLE `user`MODIFY COLUMN `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间";ALT...
2024-01-10mysql动态创建表
我在mysql上创建数据库。首先创建主体表,每个表平均有30列。日志表的标准是引用表的pk加上每列*2。像这样:Field | Type | Null | Key | Default | Extra--------+-------------+----------+---------+-------------+----------------TableID | int(11) | No | PRI | Null | a...
2024-01-10如何创建mysql表?
mysql中创建数据表的语法为:CREATE TABLE table_name (column_name column_type);在mysql>提示符下,创建一个MySQL表这是很容易的。使用 SQL 命令 CREATE TABLE 来创建表。在创建表前需要使用use databasename命令选择数据库。创建mysql数据表示例:root@host# mysql -u root -pEnter password:mysql> use TUTORIALS;Database changedmysql> C...
2024-01-10mysql如何锁表
mysql锁表的方法:打开“Navicat for MySQL”软件,新建一个查询输入“LOCK TABLES student READ;”语句,然后执行该语句,就将student表锁定了,将READ改为WRITE可以为表添加一个写锁定更多Python知识,请关注:云海天python教程网!!...
2024-01-10Mysql表锁
二.创建示例表:create table mylock( id int not null primary key auto_increment, name varchar(20) )engine myisam;insert into mylock(name)values("a"); insert into mylock(name)values("b"); insert into mylock(name)values("c"); insert into mylock(name)values("d"); i...
2024-01-10mysql出表锁表如何处理
报错Caused by: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:123) at com.mysql.cj.jdbc.exceptions.SQLError.crea...
2024-01-10Mysql主从复制搭建
1.mysql主库会把所有的写操作记录在binlog日志中,并且生成log dump线程,将binlog日志传给从库的I/O线程,从库生成两个线程,一个是I/O线程,另外一个是SQL线程。主将更改操作记录到binlog里从将主的binlog事件(sql语句) 同步本机上并记录在relaylog里从根据relaylog里面的sql语句按顺序执行。2.主从复制步骤...
2024-01-10